{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据统计"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 各类数据情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:17:10.667229Z",
     "start_time": "2020-11-17T04:17:06.890107Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4424\n",
      "3654\n",
      "4502\n",
      "920\n"
     ]
    }
   ],
   "source": [
    "import csv\n",
    "import numpy as np\n",
    "names = ['gufeng', 'liuxing', 'minyao', 'shuochang']\n",
    "for name in names:\n",
    "    with open('data/' + name + '.csv', encoding='utf-8') as f:\n",
    "        size = 0\n",
    "        rows = csv.reader(f)\n",
    "        for r in rows:\n",
    "            size = size + 1\n",
    "        print(size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:17:12.790288Z",
     "start_time": "2020-11-17T04:17:12.088603Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10822\n",
      "1360\n",
      "1318\n"
     ]
    }
   ],
   "source": [
    "train = np.load('data/train.npy')\n",
    "val = np.load('data/val.npy')\n",
    "test = np.load('data/test.npy')\n",
    "print(len(train))\n",
    "print(len(val))\n",
    "print(len(test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 长度统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:27:39.400523Z",
     "start_time": "2020-11-17T04:27:39.394550Z"
    }
   },
   "outputs": [],
   "source": [
    "import jieba \n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def length_static(corpus):\n",
    "    \"\"\"\n",
    "    Statics of length distribution.\n",
    "    \n",
    "    Args:\n",
    "    - corpus: :list: the corpus.\n",
    "    \n",
    "    Returns:\n",
    "    - L: :numpy.ndarray: (3000,) the distribution over \n",
    "    \"\"\"\n",
    "    L = np.zeros((3000,))\n",
    "    for lyric in corpus:\n",
    "        l = 0\n",
    "        for word in jieba.cut(lyric):\n",
    "            l = l + 1\n",
    "        L[l] = L[l] + 1\n",
    "    return L"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:37:38.950698Z",
     "start_time": "2020-11-17T04:37:02.491359Z"
    },
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# 使用 jieba 分词.\n",
    "import jieba\n",
    "import matplotlib.pyplot as plt\n",
    "from utils import *\n",
    "plt.rcParams['figure.figsize'] = (12.0, 10.0)\n",
    "\n",
    "# 统计每一类的长度分布\n",
    "types = ['gufeng', 'liuxing', 'minyao', 'shuochang']\n",
    "corpus, total_corpus = get_corpus(train)\n",
    "L = dict()\n",
    "for i, name in enumerate(types):\n",
    "    L[name] = length_static(corpus[i])\n",
    "    \n",
    "# 统计数据集上整体的长度分布\n",
    "L['total_corpus'] = length_static(total_corpus)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:37:49.035467Z",
     "start_time": "2020-11-17T04:37:45.689298Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 长度分布可视化\n",
    "l = L['total_corpus'][0:400]\n",
    "plt.figure()\n",
    "plt.bar(range(len(l)), l, color='b')\n",
    "plt.xlabel('length')\n",
    "plt.ylabel('freq')\n",
    "plt.title('total_corpus')\n",
    "\n",
    "i = 1\n",
    "plt.figure()\n",
    "for key,value in L.items():\n",
    "    if key != 'total_corpus':\n",
    "        l = value[0:400]\n",
    "        plt.subplot(2,2,i)\n",
    "        plt.bar(range(len(l)), l, color='b')\n",
    "        plt.xlabel('length')\n",
    "        plt.ylabel('freq')\n",
    "        plt.title(key)\n",
    "        i = i + 1\n",
    "    \n",
    "plt.show()\n",
    "# plt.figure()\n",
    "# pl = L[0:400]\n",
    "# # plt.plot(pl,color='r')\n",
    "# plt.bar(range(len(pl)),pl,color='b')\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-16T13:21:22.934844Z",
     "start_time": "2020-11-16T13:21:22.931880Z"
    }
   },
   "source": [
    "### 统计训练集中的词云"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-17T04:18:18.700109Z",
     "start_time": "2020-11-17T04:17:43.789255Z"
    }
   },
   "outputs": [],
   "source": [
    "# 统计各个类别的词频，并且生成词云\n",
    "# from wordcloud import WordCloud\n",
    "from utils import *\n",
    "corpus, _ = get_corpus(train)\n",
    "types = ['gufeng', 'liuxing', 'minyao', 'shuochang']\n",
    "for i,name in enumerate(types):\n",
    "    get_wordcloud(corpus[i], n=100, name=name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "torch",
   "language": "python",
   "name": "torch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
